/* 
 * File:   Path.h
 * Author: fruti
 *
 * Created on 20 de enero de 2014, 06:49 PM
 */

#ifndef PATH_H
#define	PATH_H
#include <iostream>
#include <fstream>
#include <list>
#include <vector>
#include <string>

using namespace std;
class Path{

public:

  list<int> * camino; // lista de nodos que conforman el camino 
  float costoCamino;
  
  Path();
  Path(Path * p);

  // Methods
 // bool caminoVacio();
 // void reemplazoCamino(Path * p, int u, int v);
  	  	  	  	  	  	  	  	  	  	  
  Path* subCamino(int i, int j); // retorna un nuevo camino, subcamino de p, de inicio i y fin j.
 // bool contieneCamino(Path* p); // retorna true si contiene el camino p
  bool contieneNodo(int node); // retorna true si contengo el nodo en el camino
  bool contieneArista(pair<int,int> * edge); // retorna true si contiene la arista (a ,b)
  

  int getLargo();
  bool iguales(Path * p);
  float getCosto();

  bool caminoVacio();
  void agregarNodo(int nodo);


  ~Path();

};

#ifdef	__cplusplus
extern "C" {
#endif




#ifdef	__cplusplus
}
#endif

#endif	/* PATH_H */

